/* Zatok - язык программирования текстовых игр
 * (С) 2010 - 2012 Меркулов Матвей Юрьевич
 * Код лицензирован под лицензией GNU LGPL
 * Вы можете прочитать текст лицензии по адресу:
 * http://www.gnu.org/copyleft/lesser.html
 * или прочитать русский перевод по адресу:
 * http://ru.wikisource.org/wiki/GNU_Lesser_General_Public_License
 */

package base.value.userobject;

import base.context.CParameter;
import base.function.CBooleanFunction;
import base.value.CValue;
import java.util.Map.Entry;

public class CIdentical extends CBooleanFunction {
	@Override
	public void Init() {
		AssertParam( 2 );
	}
	
	
	
	@Override
	public boolean ToBoolean() {
		CUserObject Object1 = Param[ 0 ].ToObject();
		if( !Object1.Children.isEmpty() ) return false;
		CUserObject Object2 = Param[ 1 ].ToObject();
		if( !Object2.Children.isEmpty() ) return false;
		if( Object1.BaseData != Object2.BaseData ) return false;
		for( Entry<CParameter, CValue> Entry : Object1.Parameters.entrySet() ) {
			CValue Value = Object2.Parameters.get( Entry.getKey() );
			if( Value == null ) return false;
			if( !Entry.getValue().IdenticalTo( Value ) ) return false;
		}
		return true;
	}
}
